The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also correspond to disclosed embodiments.
In a conventional client/server transaction a client computing device submits a request to a server, the server processes the request, and then returns a result to the client, thus completing the transaction cycle. While such a model works well for simple transactions that process quickly, the above model does not scale well to transactions that require longer durations to process. One problem is that a client device awaiting a response from a server may appear to have “hung” or “crashed” while awaiting the response, or may simply time out, before a response is received, thus having wasted the period of time awaiting a server response, and potentially having caused a server to waste resources developing a response that is never received by the client.
Although a result from the server may eventually be forthcoming, a client experiencing a perceived delay may terminate prematurely and potentially re-submit the request, causing duplicative effort on the part of the server and potentially introducing transactional errors, such as having the server implement the same request multiple times. Further still, client requests, such as those involving database transactions, have the potential to corrupt data or place records into an unknown state if a request is successfully processed by a database, but a successful completion message cannot be communicated to the client due to a prematurely terminated session or session timeout.
Such a problem is exacerbated where a client device is attempting to request a large transaction or initiate a large number of smaller transactions with a database which require more time for processing than may be acceptable to a client awaiting a result. Such large transactions or large numbers of small transactions are computationally intensive and can overburden or overwhelm supporting architecture in situations where a result or response must be returned quickly. Additionally, where supporting architecture is shared by multiple entities, dedicating a large share of processing resources to complete a request on behalf of one entity may degrade performance for all other entities sharing the supporting architecture.
The present state of the art may therefore benefit from the methods and systems for batch processing in an on-demand service environment as described herein.